🐱 算神的小窝 🤓

EntityFramework Core MySql To many connections 异常排查解决.md


CreationTime:10/5/2024 10:31:01 AM LastAccessTime:2/1/2025 6:06:48 PM


环境:.Net 8.0

Mysql 驱动:Pomelo.EntityFrameworkCore.MySql 8.0.2

一、异常描述

今天在测试环境,测试工程师反应很多接口500错误,异常信息是 “To many connections”,因为是微服务架构,多个服务出现这个情况 ,并且有同事的navicat也连接不到MySql。

二、分析

根据此情况分析排除了代码原因(这块我写的,所以结合现有情况做了排除)造成连接数爆掉,可能是达到数据库的连接数限制。

show variables like 'max_connections'; 查看最大连接数:100

show processlist; 统计目标数据库连接数达到了 100 满了。

根据数据库过滤使用此SQL比较方便:SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where DB='<dbname>'

至此问题找到。

三、解决

当务之急是先行恢复数据库的使用,所以临时设置了连接数限制到1000(永久设置需要改mysql配置文件)

SET GLOBAL max_connections = 1000;

执行后,服务恢复正常。

恢复后通过 show processlist; 观察连接数,几乎稳定在 10x,且发现有来自一个局域网的IP长时间占用了46个连接数,遂排查开发人员电脑IP,未发现匹配的。

根据IP统计连接数 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where HOST like '192.168.3.184%'

由于是本地测试环境,所以并没有对数据库的连接数限制做设置,用的默认值。

An unhandled error has occurred. Reload 🗙